package com.tanhua.manage.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tanhua.manage.domain.Log;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

public interface LogMapper extends BaseMapper<Log> {
    @Select("SELECT COUNT(*) FROM tb_log WHERE log_time=#{now} AND TYPE=#{type}")
    long queryNumsByType(@Param("now") String now,@Param("type") String type);

    //查询活跃人数
    @Select("SELECT COUNT(DISTINCT user_id) FROM tb_log WHERE log_time=#{now}")
    long queryNumsByDate(String now);

    //查询数据统计
    @Select("SELECT COUNT(DISTINCT user_id) FROM tb_log WHERE log_time=#{now} AND user_id IN (\n" +
            "\n" +
            "SELECT user_id FROM tb_log WHERE log_time=#{yesterday} AND TYPE='0102')\n")
    long queryRetention1d(@Param("now") String now,@Param("yesterday") String yesterday);
    /**
     *  统计log表中，今日注册人数
     * @param today 日期
     * @param type  0102
     * @return 注册人数总数
     */
    Long countNumRegistered(@Param("today") String today,@Param("type") String type);

    /**
     * 统计log表中，今日登录人数
     * @param today 日期
     * @param type 0101
     * @return 今日登录总数
     */
    Long countNumLogin(@Param("today")String today, @Param("type")String type);

    /**
     * 统计log表中，活跃用户数
     * @param today 日期
     * @return 活跃用户数总数
     */
    Long countNumActive(String today);

    /**
     * 统计log表中，次日留存用户数
     * @param today 日期
     * @param yesterday 日期
     * @return 次日留存用户数
     */
    Long countNumRetention1d(@Param("today")String today,@Param("yesterday") String yesterday);

    /**
     * 按月份查询注册用户
     * @param start
     * @param end
     * @return
     */
    Integer countNumRegisteredByMonth(@Param("start") String start, @Param("end")String end);

    /**
     * 按月份查询活跃用户
     * @param start
     * @param end
     * @return
     */
    Integer countNumActiveByMonth(@Param("start") String start, @Param("end")String end);

    /**
     * 按月份查询次日留存率
     * @param start
     * @param end
     * @return
     */
    Integer countNumRetention1dByMonth(@Param("start") String start, @Param("end")String end);
}
